#ifndef FEAPPLICATION_H
#define FEAPPLICATION_H
#include "fecore_global.h"
#include "fecore.h"
#include "feactualdataservice.h"
#include "fecontroller.h"
#include "feplugin.h"
#include <QApplication>
#include <QList>

class FeCoreImpl;
class FeActualDataServiceImpl;
class FeMainWindow;
class FeSystemWidgetFactory;

class FeApplication : public QApplication {
	Q_OBJECT
public:
	FeApplication(int &argc, char **argv);
	~FeApplication();

	static FeApplication *instance();

	FeWidgetFactory *systemWidgetFactory() const;

private:
	Q_DISABLE_COPY(FeApplication)
	friend class FeCoreImpl;

	void init();
	void loadPlugins();
	void initPlugins();
	
	FeCoreImpl *fecore;
	FeMainWindow *mainwnd;
	FeSystemWidgetFactory *syswf;
	
	// services
	FeActualDataServiceImpl *ads;

	QList<FePluginInterface *> plugins;
	QList<FeController *> ctls;
};

#endif